package com.ting.test.algorithms.贪心算法.会议场次问题;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.PriorityQueue;

/**
 * 一些项目要占用一个会议室宣讲，会议室不能同时容纳两个项目的宣讲。
 * 给你每一个项目开始的时间和结束的时间
 * 你来安排宣讲的日程，要求会议室进行的宣讲的场次最多。
 * 返回最多的宣讲场次。
 */
public class 会议场次问题 {
    public static void main(String[] args) {
        int[][] arr = new int[][]{{2, 3}, {4, 5}, {1, 5}, {3, 4}};
        int count = result(arr);
        System.out.println("返回最多的场次:" + count);
    }


    private static int result(int[][] arr) {
        Meeting[] meetings = new Meeting[arr.length];
        for (int i = 0; i < arr.length; i++) {
            meetings[i] = new Meeting(arr[i][0], arr[i][1]);
        }
        //先按照结束时间由小到大排序
        Arrays.sort(meetings, new MyComparator());
        int count = 1;
        int time = meetings[0].endTime;
        for (int i = 0; i < meetings.length; i++) {
            if (time <= meetings[i].startTime) {
                count++;
                time = meetings[i].endTime;
            }

        }

        return count;
    }

    /**
     * 当前会议室要的话，最多能举办几次
     *
     * @param arr
     * @return
     */
    private static int process(int[][] arr) {
        PriorityQueue<Meeting> queue = new PriorityQueue(new MyComparator());
        //先按照结束时间由小到大排序
        for (int[] as : arr) {
            queue.add(new Meeting(as[0], as[1]));
        }
        return 0;
    }
}
